#define _CRT_SECURE_NO_WARNINGS

namespace my_queue
{
	//template<class T, class Container = list<T>>
	template<class T, class Container = deque<T>>
	class queue
	{
	public:
		void push(const T& x) { _con.push_back(x); }
		void pop() { _con.pop_front(); }
		size_t size() { return _con.size(); }
		bool empty() { return _con.empty(); }
		const T& back() { return _con.back(); }
		const T& front() { return _con.front(); }
	private:
		Container _con;
	};

	void test()
	{
		queue<int> qu;
		qu.push(1);
		qu.push(2);
		qu.push(3);
		qu.push(4);
		qu.push(5);

		while (!qu.empty())
		{
			cout << qu.front() << ' ';
			qu.pop();
		}
		cout << endl;
	}
}